<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 之前的函数 都是 alert() document.write() console.log()结果 
        // 他们仅仅是 将结果输出到页面上  弹框 控制台  我们没法拿到结果  

        // alert(alert('hello world'));
        // 先弹框 hello world 然后再弹出 undefined 
        // 这就是 alert 仅仅弹框 显示 不给你结果  
        // console.log(console.log('hello world'));
        // 先在控制台显示 'hello world'
        // 然后再控制台显示 undefined 
        // 仅仅将 内容显示在控制台 不把结果给你  
        // document.write(document.write('hello world'));
        // hello world     undefined
        // 也是仅仅是不给你结果   

        // 上面三个工具没有返回值   

        // 求任意两个数字的和  并且找一个变量来存放这个结果  
        
        // function add_nums(num1,num2){
        //     // console.log(num1+num2)
        //     return num1+num2
        // }

        // var res = add_nums(10,20);
        // console.log(res);

        


        // 函数调用函数 

        // function test1(){
        //     console.log('我是test1');
        // }


        // function test2(){
        //     console.log('我是test2');
        //     test1()
        // }


        // test2()

        // 两个数的乘积 / 最大公约数 = 最小公倍数

        function gcd(num1,num2){
            // 两个数的公约数  一定是在 1到两个数小的那一个 
            var min = num1<num2?num1:num2; //确保min中是两个数小的那一个
            var res = 1; // res存放最大公约数 默认为1
            for(var i=1;i<=min;i++){ // 1到 min挨个去尝试 
                if(num1 % i == 0 && num2 % i ==0){
                    res = i;  // 最后一个放进去的就是我们想要的
                }   
            }

            return res;
        }

        // // gcd(12,8); 这样仅仅是拿到结果  但是没有做其它操作
        // var data = gcd(12,8);
        // alert(data);


        function gcd2(num1,num2){
            // 两个数的公约数  一定是在 1到两个数小的那一个 
            var min = num1<num2?num1:num2; //确保min中是两个数小的那一个
            var res = 1; // res存放最大公约数 默认为1
            for(var i=min;i>=1;i--){ // 1到 min挨个去尝试 
                if(num1 % i == 0 && num2 % i ==0){
                    res = i;  // 最后一个放进去的就是我们想要的
                    break
                }   
            }

            return res;
        }
        // // gcd2(12,9);  这样仅仅是拿到结果 但是没有进行相应的操作  
        // var data1 = gcd2(12,9);
        // alert(data1);
        // function lcm(num1,num2){
        //     return num1*num2 / gcd2(num1,num2)

        // }

        // var data2 =  lcm(12,8);
        // alert(data2)



        // 求一个数字的阶乘  
        // !5  5*4*3*2*1
        // !8  8*7*6*5*4*3*2*1
        // 输入任意数字 求它的阶乘 

        // function factorial(num){
        //     //如果用户输入1  立即返回1
        //     if(num == 1){
        //         // alert(1); 如果这里是弹框 它没有返回值 所以保存在变量中的是
        //         // undefined 
        //         return 1;
        //     }
        //     var res = 1;
        //     for(var i=1;i<=num;i++){
        //         res *= i;
        //     }
        //     // alert(res);
        //     return res;
        // }

        // var data1 = factorial(10);
        // var data2 = factorial(9);
        // var data3 = factorial(8);
        // var data4 = factorial(7);

        // console.log(data1,data2,data3,data4);



    </script>
</body>
</html>